package com.example.lib.io;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 缓冲区的出现是为了提高流的操作效率而出现的。
 * 所以在创建缓冲区之前，必须要先有流对象。
 * 该缓冲区中提供了一个跨平台的换行符，newLine().
 */
public class i_io_bufferedWriter_19_01 {

    public static void main(String[] args) throws IOException {
        //创建一个字符写入流对象
        FileWriter fw=new FileWriter("buf.txt");

        //为了提高字符写入流的效率，加入了缓冲技术。
        //只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
        BufferedWriter bufw=new BufferedWriter(fw);

        for (int i = 0; i < 5; i++) {
            bufw.write("abcd"+i);
            bufw.newLine();
            bufw.flush();//为什么需要及时flush。
            // 因为如果在循环完再flush，在循环中间有不可控因素例如停电，或者死机，那么循环部分因为全部保存在内存中而不在磁盘上，数据就丢失了。
            //及时flush能尽可能小的丢失数据。
        }
        //记住，只要用到缓冲区，就要记得刷新。
//        bufw.flush();
        //其实关闭缓冲区，就是在关闭缓冲区中的流对象。
        bufw.close();



    }

}
